Safe Systems Programming Languages
نویسنده
چکیده
The C programming language provides explicit memory management, precise control over low-level data representations and high code efficiency. These features are indispensable for systems programming. However, C achieved these goals at the cost of sacrificing type safety. Safety violations like array out-of-bound accesses and dangling pointer accesses lead to a huge amount of well-known software bugs and malicious attacks. This paper surveys languages and tools for type-safe systems programming, including SafeC, CCured, Vault and Cyclone. Techniques such as code transformation, dynamic safety checking, static analysis, regionbased memory management and linear type systems are used to provide type safety for C-like languages. We motivate the use of such languages and tools, present their approaches with examples and explanations, compare them in various aspects and discuss their trade-offs. We present some similarities and dualities among these langauges and provide thoughts about future research directions.
منابع مشابه
The Role of Programming Languages in the Life Cycle of Safe Systems
Safety as understood in the conference theme can be separated into the more technical terms of safety progress and security nothing bad happens the right things do happen and things happen under proper authorization All three interact to make a system safe in the broader sense This article introduces to the degree of safety in the technical sense that can be directly supported by programming la...
متن کاملResource-Safe Systems Programming with Embedded Domain Specific Languages
We introduce a new overloading notation that facilitates programming, modularity and reuse in Embedded Domain Specific Languages (EDSLs), and use it to reason about safe resource usage and state management. We separate the structural language constructs from our primitive operations, and show how precisely-typed functions can be lifted into the EDSL. In this way, we implement a generic framewor...
متن کاملTrellys: Dependently-typed Language Design
My research focuses on the design of statically-typed programming languages. Static type systems are a popular, cost-effective form of lightweight program verification. They provide a tractable and modular way for programmers to express properties that can be mechanically checked by the compiler. As a result, the compiler can rule out a wide variety of errors and provide more information to ref...
متن کاملRust and the importance of memory safe systems programming languages
1 SUMMARY As technology has become more and more integrated in our lives, it is becoming more and more important to be able to trust in the security of the systems we use every day. Just like you would not trust a bank with no vault or want to store your mail in an unlocked room, it is of utmost importance to ensure that our technology is also as secure as possible. In this report, I will attem...
متن کاملContrasting compile-time meta-programming in Metalua and Converge
Powerful, safe macro systems allow programs to be programatically constructed by the user at compile-time. Such systems have traditionally been largely confined to LISP-like languages and their successors. In this paper we describe and compare two modern, dynamically typed languages Converge and Metalua, which both have macro-like systems. We show how, in different ways, they build upon traditi...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2004